# -*- coding:utf-8 -*-


# 高阶函数

# 计数器
def counter(base):
    def inc(step=1):
        nonlocal base
        base = base + step
        return base
    return inc

f1 = counter(5)
print(id(f1))
f2 = counter(5)
print(id(f2))


'''
分析：
1.函数counter是不是一个高阶函数．
2.代码有没有问题，如何改进?
3.如何调用完成计数功能．
4. f1 = counter(5)和f2=counter(5),请问f1和f2相等嘛？
'''

"""
# 自定义sort函数
# sort函数实现，用一个参数控制顺序．
def sort(iterable,reverse=False):
    ret = []
    for x in iterable:
        for i,y in enumerate(ret):
            flag = x > y if reverse else x < y
            if flag: 
                ret.insert(i,x)
                break
        else:
            ret.append(x)
    return ret


def sortone(iterable,fn=lambda a,b:a>b):
    ret = []
    for x in iterable:
        for i,y in enumerate(ret):
            if fn(x,y) #函数的返回值是bool.
                ret.insert(i,x)
                break
        else:
            ret.append(x)
    return ret

print(sort([1,2,5,4,2,3,5,6,]))
# 升序还是降序，如何反序？

"""